# PCB & Context Switching
# Process Management
CPU๊ฐ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ๊ฐ์ผ ๋, CPU ์ค์ผ์ค๋ง์ ํตํด ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งํจ
์ด๋, CPU๋ ๊ฐ ํ๋ก์ธ์ค๋ค์ด ๋๊ตฐ์ง ์์์ผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํจ
ํ๋ก์ธ์ค๋ค์ ํน์ง์ ๊ฐ๊ณ ์๋ ๊ฒ์ด ๋ฐ๋ก Process Metadata
# Process Metadata
- Process ID
- Process State
- Process Priority
- CPU Registers
- Owner
- CPU Usage
- Memeory Usage
์ด ๋ฉํ๋ฐ์ดํฐ๋ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด PCB(Process Control Block)
์ด๋ผ๋ ๊ณณ์ ์ ์ฅ๋จ
# PCB(Process Control Block)
ํ๋ก์ธ์ค ๋ฉํ๋ฐ์ดํฐ๋ค์ ์ ์ฅํด ๋๋ ๊ณณ, ํ PCB ์์๋ ํ ํ๋ก์ธ์ค์ ์ ๋ณด๊ฐ ๋ด๊น
# ๋ค์ ์ ๋ฆฌํด๋ณด๋ฉด?
ํ๋ก๊ทธ๋จ ์คํ โ ํ๋ก์ธ์ค ์์ฑ โ ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ (์ฝ๋, ๋ฐ์ดํฐ, ์คํ) ์์ฑ
โ ์ด ํ๋ก์ธ์ค์ ๋ฉํ๋ฐ์ดํฐ๋ค์ด PCB์ ์ ์ฅ
# PCB๊ฐ ์ ํ์ํ๊ฐ์?
CPU์์๋ ํ๋ก์ธ์ค์ ์ํ์ ๋ฐ๋ผ ๊ต์ฒด์์ ์ด ์ด๋ฃจ์ด์ง๋ค. (interrupt๊ฐ ๋ฐ์ํด์ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๊ฐ waiting ์ํ๊ฐ ๋๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ running์ผ๋ก ๋ฐ๊ฟ ์ฌ๋ฆด ๋)
์ด๋, ์์ผ๋ก ๋ค์ ์ํํ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค์ ๊ดํ ์ ์ฅ ๊ฐ์ PCB์ ์ ์ฅํด๋๋ ๊ฒ์ด๋ค.
# PCB๋ ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๋์?
Linked List ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋๋ค.
PCB List Head์ PCB๋ค์ด ์์ฑ๋ ๋๋ง๋ค ๋ถ๊ฒ ๋๋ค. ์ฃผ์๊ฐ์ผ๋ก ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ ธ ์๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ด๊ธฐ ๋๋ฌธ์ ์ฝ์ ์ญ์ ๊ฐ ์ฉ์ดํ๋ค.
์ฆ, ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฉด ํด๋น PCB๊ฐ ์์ฑ๋๊ณ ํ๋ก์ธ์ค ์๋ฃ์ ์ ๊ฑฐ๋๋ค.
์ด๋ ๊ฒ ์ํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ ๋, CPU์ ๋ ์ง์คํฐ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ Context Switching
์ด๋ผ๊ณ ํ๋ค.
# Context Switching
CPU๊ฐ ์ด์ ์ ํ๋ก์ธ์ค ์ํ๋ฅผ PCB์ ๋ณด๊ดํ๊ณ , ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ PCB์ ์ฝ์ด ๋ ์ง์คํฐ์ ์ ์ฌํ๋ ๊ณผ์
๋ณดํต ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ์คํ ์ค์ธ CPU ์ฌ์ฉ ํ๊ฐ์๊ฐ์ ๋ชจ๋ ์๋ชจํ๊ฑฐ๋, ์ ์ถ๋ ฅ์ ์ํด ๋๊ธฐํด์ผ ํ๋ ๊ฒฝ์ฐ์ Context Switching์ด ๋ฐ์ํ๋ค.
์ฆ, ํ๋ก์ธ์ค๊ฐ Ready โ Running, Running โ Ready, Running โ Waiting์ฒ๋ผ ์ํ ๋ณ๊ฒฝ ์ ๋ฐ์!
# Context Switching์ OverHead๋?
overhead๋ ๊ณผ๋ถํ๋ผ๋ ๋ป์ผ๋ก ๋ณดํต ์์ข์ ๋ง๋ก ๋ง์ด ์ฐ์ธ๋ค.
ํ์ง๋ง ํ๋ก์ธ์ค ์์ ์ค์๋ OverHead๋ฅผ ๊ฐ์ํด์ผ ํ๋ ์ํฉ์ด ์๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ค๊ฐ ์
์ถ๋ ฅ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด์ ๋๊ธฐ ์ํ๋ก ์ ํ์ํด
์ด๋, CPU๋ฅผ ๊ทธ๋ฅ ๋๊ฒ ๋๋๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์ํ์ํค๋ ๊ฒ์ด ํจ์จ์
์ฆ, CPU์ ๊ณ์ ํ๋ก์ธ์ค๋ฅผ ์ํ์ํค๋๋ก ํ๊ธฐ ์ํด์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํ์ํค๊ณ Context Switching ํ๋ ๊ฒ
CPU๊ฐ ๋์ง ์๋๋ก ๋ง๋ค๊ณ , ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ฒ ์ผ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํด์ฃผ๊ธฐ ์ํ ๊ฒ์ด๋ค.